package activiti.day03;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;

import java.util.List;

/**
 * @Author: 蔡翔
 * @Date: 2019/9/3 9:10
 * @Version 1.0
 */
// 查询流程定义相关信息。
// 只要流程部署好了，就不用重复部署，就能够直接调用processEngine来调用里面的方法。
public class QueryProcessDefinition {
    public static void main(String[] args) {
        //1.得到ProcessEngine对象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.创建RepositoryService对象
        RepositoryService service = processEngine.getRepositoryService();
        //3.得到ProcessDefinitionQuery对象(可以认为就是一个查询器)
        ProcessDefinitionQuery processDefinitionQuery = service.createProcessDefinitionQuery();
        //4.设置条件，并且查询出当前的所有定义流程。 查询条件：流程定义的key=holiday
        //.orderByProcessDefinitionVersion() 设置排序方式，根据流程定义的版本号进行排序
        List<ProcessDefinition> list = processDefinitionQuery.processDefinitionKey("holiday")
                .orderByProcessDefinitionVersion()
                .desc().list();
        //5.输出流程定义信息。
        for(ProcessDefinition processDefinition : list){
            System.err.println("流程定义id："+processDefinition.getId());
            System.err.println("流程定义名称："+processDefinition.getName());
            System.err.println("流程定义id："+processDefinition.getKey());
            System.err.println("流程定义id："+processDefinition.getVersion());
            System.err.println("流程部署的 id："+processDefinition.getDeploymentId());

        }
    }
}
